package com.otitan.la.forest.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.otitan.la.forest.system.dto.LoginUserDTO;
import com.otitan.la.forest.system.dto.UserDTO;
import com.otitan.la.forest.system.dto.UserResetDTO;
import com.otitan.la.forest.system.entity.UserEntity;
import com.otitan.webapp.framework.basepro.model.DataResult;
import org.springframework.validation.BindingResult;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 用户表
 *
 * @author jiacs
 * @email xxx
 * @date 2020-09-15 16:01:53
 */
public interface UserService extends IService<UserEntity> {
    /**
     * 新增
     *
     * @return
     */
    DataResult add(UserEntity user, BindingResult bindingResult);

    /**
     * 批量删除
     *
     * @return
     */
    DataResult batchDelete(List<String> ids);

    /**
     * 修改
     *
     * @return
     */
    DataResult editor(UserEntity user, BindingResult bindingResult);

    /**
     * 列表查询（分页）
     *
     * @return
     */
    DataResult findPageData(long page, long size, UserDTO user);

    /**
     * 根据ID查询
     *
     * @return
     */
    DataResult findOne(String id);

    /**
     * 用户登录
     *
     * @param sysUser
     * @return
     */
    DataResult login(LoginUserDTO sysUser);

    /**
     * 获取用户权限
     *
     * @param [request]
     * @return com.otitan.webapp.framework.basepro.model.DataResult
     * @throws
     * @author jiachangsen
     * @date 2020/09/21 13:38
     */
    DataResult getLoginUserAuth(HttpServletRequest request, String appCode);

    /**
     * 获取当前登录应用权限
     *
     * @param []
     * @return com.otitan.webapp.framework.basepro.model.DataResult
     * @throws
     * @author jiachangsen
     * @date 2020/09/21 15:06
     */
    DataResult getLoginUserApp();

    /**
    * 用户重置密码
    * @author Sunke
    * @param [id]
    * @return com.otitan.webapp.framework.basepro.model.DataResult
    * @exception 
    * @date 2020/9/27 0027 09:58
    */
    DataResult resetPwd(String id);

    /**
    * 用户修改密码
    * @author Sunke
    * @param [userDTO]
    * @return com.otitan.webapp.framework.basepro.model.DataResult
    * @exception
    * @date 2020/9/27 0027 10:01
    */
    DataResult updatePwd(UserResetDTO userDTO, BindingResult bindingResult);

    /**
     * 获取当前登录用户信息
     * @author jiachangsen
     * @param []
     * @return com.otitan.webapp.framework.basepro.model.DataResult<com.otitan.la.forest.system.entity.UserEntity>
     * @exception
     * @date 2020/09/27 15:10
     */
    DataResult<UserEntity> getLoginUserInfo();
}

